<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>构造函数继承</title>
</head>
<body>
    <script>
        /**
        * 构造函数继承
        * 缺陷：没办法拿到父类原型上的属性和方法
        **/
        function Supper() {
            this.a = '111';
            this.b = [1, 2, 3, 4]
        }

        Supper.prototype = {
            say: function(){
                console.log('222');
            },
            c: '444'
        }

        function Sub() {
            // 执行父函数
            // 将this指向Sub, 这样每次实例化Sub时，都会有自己独立的属性和方法
            Supper.call(this)
        }

        var sub1 = new Sub();
        console.log(sub1);
        sub1.a = '333';
        sub1.b.push(5)
        
        // 缺陷：无法say方法
        // sub1.say();
        // console.log(sub1.c); // undefined

        var sub2 = new Sub();

        console.log(sub1.a); // 333
        console.log(sub2.a); // 111

        console.log(sub1.b); // [1, 2, 3, 4, 5]
        console.log(sub2.b); // [1, 2, 3, 4]
    </script>
</body>
</html>